
package servidor.bbdd;

import beans.PreguntaEnquesta;
import common.EOlympicsException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe GestorPreguntesEnquestes
 * @author Juan Luís Chávez Lobato i Jesús Hernàndez Garcia
 */

public class GestorPreguntesEnquestes {
    
    private GestorDiscConnexio gestor;
    private Connection connexio;

    /**
     * Constructor de la classe GestorEstudiants
     * Crea un nou gestor de disc.
     */
    public GestorPreguntesEnquestes() throws EOlympicsException {
        this.gestor = new GestorDiscConnexio();
        this.gestor.obreConnexioBD();
        this.connexio = gestor.getConnexio();
    }

    /**
     * Constructor de la classe GestorEstudiants
     * Utilitza el gestor de disc passat com a paràmetre
     * @param gdc connexió a la BD de tipus GestorDiscConnexio
     */
    public GestorPreguntesEnquestes(GestorDiscConnexio gdc) {
        this.gestor   = gdc;
        this.connexio = gdc.getConnexio();
    }
    
    /**
     * Mètode que obté la llista de preguntes
     * @return Llista de les Preguntes de les enquestes
     */
    public List<PreguntaEnquesta> obtenirPreguntesEnquestes() throws EOlympicsException {
        List<PreguntaEnquesta> LlistaPreg = new ArrayList<PreguntaEnquesta>();
        PreguntaEnquesta Preg;

        try {
            Statement sentencia = gestor.creaSentencia();
            String select = "SELECT * FROM PREGUNTA_ENCUESTA ORDER BY num_pregunta";
            ResultSet rs = sentencia.executeQuery(select);
            while (rs.next()) {
                Preg = new PreguntaEnquesta(rs.getInt(1), rs.getString(2));
                LlistaPreg.add(Preg);
            }
            rs.close();
            sentencia.close();
        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
            throw new EOlympicsException(EOlympicsException.ERR_SQL);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            throw new EOlympicsException(EOlympicsException.ERR_DESC_EXEC);
        }
        return LlistaPreg;


    }

    /**
     * Consulta una pregunta pel seu número
     * @param num_preg Número de la pregunta
     * @return PreguntaEnquesta de la pregunta amb número igual al passat com a paràmete
     * @exception EOlympicsException
     */
    public PreguntaEnquesta obtenirPregunta(int num_preg) throws EOlympicsException {
        PreguntaEnquesta pre = null;
        Statement sentencia = gestor.creaSentencia();
        String select = "SELECT num_pregunta, texto "
                + "FROM PREGUNTA_ENCUESTA WHERE num_pregunta = " + num_preg;
        try {
            ResultSet rs = sentencia.executeQuery(select);
            if (rs.next()) {
                pre = new PreguntaEnquesta(rs.getInt(1),rs.getString(2));
            }
            rs.close();
            sentencia.close();

        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
            throw new EOlympicsException(EOlympicsException.ERR_SQL);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            throw new EOlympicsException(EOlympicsException.ERR_DESC_EXEC);
        }
        return pre;
    }

}
